�� ������ Change Method Signature �����丵 ������ ��ſ��� �������� overview�� �����ϰ� how
�� �����丵�� IntelliJ
IDEA���� ���� �� �ִ°��� �����մϴ�.
Change Method Signature �����丵�� �޼ҵ� �ñ׳��Ŀ� ������� �� �ִ� ���� ���� �ٸ� ������ �����մϴ�.
������ ������ ������ �����ϴ�
�޼ҵ� �̸� ����
���� �� ����
�� ���� ����
�� �ֹ� �Ű� ����
���� Ÿ�� ����
�Ű����� Ÿ�� ����
�Ű� ���� �̸� ����
�� �����丵�� �����ڿ��� ���� ���������� ����� �׵��� �̸� �Ǵ� ���� ���¸� ������ �� �����ϴ�.
�ñ׳��� �� ��ü�� �����ϴ� �Ϳ� ����, IDEA�� �޼ҵ��� ��� ��뿡 ���� Ž���� ���̰�, ��ü ȣ��, ������ ������ �ݿ��ϱ� ���� �����ϰ� ����� �� �ִ� �޼ҵ���
overriding�� �ٲ� ���Դϴ�. ���� �Ű� ������ �߰��Ǹ�, �װ��� �޼ҵ� ���� ���� ���Ǵ� ����Ʈ ���� ���޵Ǿ�߸� �մϴ�.

|
���� �� ���� �տ��� ������ �׸񿡼� ����� ������ �� ������ overriding�̿ܿ� �޼ҵ� �ݿ� ������ ��ġ�� �ʽ��ϴ�. ���� ����� �Ű� ���� ���� �Ǵ� ���� ���¸� �����ϰ�, �ٲ�� �ڵ带 ������ �Ϸ��� �ϸ� ��ſ��� ���� �޽����� ������Ʈ �� �� �Դϴ�. ����� ������ �޴� �޼ҵ� �� �Ǵ� �޼ҵ� ���� �������� �����ؾ߸� �� ���Դϴ�.
|
�޼ҵ� �ñ׳����� �����ϸ� ����� �޼ҵ� ���� �ٷ�� �� ���� �ɼ��� �����ϴ�. ù ��°, Modify �� ������ �޼ҵ� ���� �����մϴ�. �� ��°, Delegate
via overloading method �� ���� �޼ҵ��� �ñ׳����� �ٲٰ�, ���� �޼ҵ��� �ñ׳��İ� �Բ� ���ο� �޼ҵ带 �����մϴ�. �� ���ο� �޼ҵ�� ���ο� �ñ׳��İ� �Բ� ������ �޼ҵ忡 ���� �����մϴ�.
���� ���, �츮�� ������ Ŭ������ �����ϴ�:
class AClass {
public void methodA() {
//some code here
}
public void methodB() {
//some code here
}
}
...
void foo (AClass aClass){
aClass.methodA();
}
�׸��� Ÿ�� int�� �� ������ ï¿½ß°ï¿½ï¿½Ï¸é¼ methodA�� �ñ׳����� Modify�� �����մϴ�. �����丵 ���� �� Ŭ������ ������ ���� �� ���Դϴ�:
class AClass {
public void methodA( int aParameter) {
//some code here
}
public void methodB() {
//some code here
}
}
�߰��� �Ű� ������ ���� ����Ʈ ���� �߰��ϴ� �Ϳ�
���� ���õ� �޼ҵ��� �κ����̼��� ����� ���Դϴ�:
void foo (AClass aClass){
aClass.methodA(0);
}
���� ����� Delegate
via overloading method �����ϸ� AClass �ڵ�� �ٸ��� �� ���Դϴ�.
class AClass {
public void methodA() {
methodA(0);
}
public void methodA( int aParameter) {
//some code here
}
public void methodB() {
//some code here
}
}
...
void foo (AClass aClass){
aClass.methodA();
}
�޼ҵ� �ñ׳��� ����
|
�޼ҵ� �ñ׳����� �����ϱ� ���ؼ�
1. Project, �� �ٸ� ������
Commander ���� �޼ҵ带 �����ϰų� �Ǵ� ���� �����⿡�� ������Ǵ� �޼ҵ� �̸����� ij���� ��ġ��Ű��, �� ���� �˾� �޴�(Ŭ������ ������ ��ư Ŭ���Ͽ�) �Ǵ� ���� Menu Bar �� �� ��� �����κ��� Ctrl + F6 ������ OR Refactor
| Change
Signature...�� Ŭ���մϴ�.
2. ���� ���̾�α� ������� �����丵 �Ű� ������ �����ϱ� ���� ��Ÿ�� ���Դϴ�:

�̸�
|
�� �ؽ�Ʈ �ʵ忡�� ����� �޼ҵ��� �̸��� ������ �� �ֽ��ϴ�.
|
���� ����
|
�� �ؽ�Ʈ �ʵ忡�� ����� �޼ҵ��� ���� ���¸� ������ �� �ֽ��ϴ�.
|
�� ����
|
�� ��Ͽ��� ����� ���õ� �޼ҵ�(���� Add �Ǵ� Remove ��ư�� ����Ͽ�)�� ���� �Ű� ������ �߰� �Ǵ� ������ �� �ְų�, �׵��� ����(���� Move
up �Ǵ� Move
down ��ư�� ����Ͽ�)�� ������ �� �ֽ��ϴ�. ���� ����� �����ϴ� �Ű� ���� �ʵ带 Ŭ���ϴ� �Ϳ� ���� �Ű� ������ Ÿ���� �����ϰų�, �̸��� ���ų�, ���Ӱ� �Է��� �� �ִ� �Ű� ������ ���� ����Ʈ ���� ������ �� �ֽ��ϴ�. ���� �Ű� ���� ���� �Ǵ� �̸��� ����Ȯ�ϸ� ��ſ��� Incorrect
Data ���̾�αװ� ������Ʈ �� �� �Դϴ�.

|
���� ���ο� �Ű� ������ �߰��Ǹ�, �װ��� �޼ҵ� ���� ���� ���Ǵ� ����Ʈ ���� �����Ǿ�߸� �մϴ�. �װ��� ������, ����� ������
Incorrect Data ���̾�α׸� �� ���Դϴ�:

|
Any var üũ �ڽ��� ���õǸ�, ���� �޼ҵ� �� ����Ʈ���� �������� �� Ÿ�԰� �Բ� ������ �ϳ��� �ʵ�/�Ű�����/���� �ִٸ�
IDEA�� �����ϴ� �Ű� ������ ���� ������ Ÿ�԰� �Բ� � ������ �ʵ�/�Ű�����/���� ȣ���ϴ� �޼ҵ忡�� �����丵 �� �Ŀ� ã�Ƽ� ����Ϸ��� �� �� �Դϴ�. ���� �� ���� �����Ұ� ����Ʈ ���� ������ �� Ÿ�԰� �Բ� �ִٸ� ���� ���˴ϴ�. ���� Any var üũ �ڽ��� ���õǸ�, ����Ʈ ���� �׻� ����� ���Դϴ�.
|
�ñ׳��� �̸� ����
|
�ű⿡�� ����� ������ ����ǰ� �� �Ŀ� ��Ÿ�� ���� �޼ҵ� �ñ׳����� �̸� ������ �� �ֽ��ϴ�.
|
����� �̸� ���� ���
|
�� üũ �ڽ��� �����ϸ� ����� � ����� �߰ߵǾ����� �����ϰ�, �׵��� ��ü�� �����ϵ��� ����մϴ�.
�� üũ �ڽ��� ���õ��� ���� ��, IDEA�� ��ü�� �ڵ������� �����մϴ�.

|
������ üũ �ڽ��� ���õ��� �ʾ��� ����, ���� �߰ߵ� ����� � �б� ���� ���Ͽ��� �����ϸ� ����� ��ü ����� Ȯ���ϴ� ������Ʈ�� ��ſ� ���� �� �Դϴ�.
|
Refactoring Preview ���̾�α�(���� �װ��� ��Ÿ����)���� ����� ����� ������ �м��� �� �ֽ��ϴ�. �����丵�� �Բ� �����ϱ� ���ؼ�, Do
Refactor�� Ŭ���մϴ�, �׷��� �ʴٸ� Cancel �� Ŭ���մϴ�. ���� ���� ������ Refactoring
Preview�� ���ʽÿ�.
|
|
3. OK�� �����ϴ�, �׸��� �޼ҵ� �ñ׳����� ����� ���Դϴ�.
4. ����� Change Method Signature �� ������ ���̽� Ŭ���� �޼ҵ带 Override �ϰų� �Ǵ� Implement�ϴ� �޼ҵ带 Refactor �Ϸ��� �� ��, ��ſ��� ������ ���̾�αװ� ����� �� �Դϴ�.

No�� ������ ����� ���̽� Ŭ���� �޼ҵ带 �ٲ��� �ʰ� ���õ� �޼ҵ常�� Refactor�ϵ��� ����մϴ�.
Yes�� ������ ����� ���̽� Ŭ�������� ��� �޼ҵ带 �����ϴ� ���� ����մϴ�. �׷���, ���� �װ��� � ���������� �Ұ����ϸ� ����� �����ϴ� ���� �޽����� �� ���Դϴ�, ���� ���:

5. ���� Delegate via overloading method �� ���õǰ� ����� �׷� �ڵ带 �����ϴ� :
class A{
public void method(){
//some code
};
}
class B extends A{
public void method(){
//some code
};
}
A Ŭ����(�θ�) �޼ҵ忡 ����� �����丵 �Ŀ�:
class A{
public void method(){
method(1);
}
public void method( int param){
//some code
};
}
class B extends A{
public void method( int param){
//some code
};
}
A.method�� ����ǰ�, B.method �ñ׳��� ���� ����˴ϴ�.
|